const tip = `
1.我们工作室的名字叫做辐射工作室，英文名Rediation Studio，是神奇代码岛Pro的一个小型工作室
2.成员 坦率的血翼蝠5801、shen梦、稳重的刺牙螺hvpe、fish666、给你俩窝窝-哟西 请不要打错人名！
3.我们目前作品只有2个：《岛2跑酷》是我们工作室中 @坦率的血翼蝠5801 在神奇代码岛Pro复刻代码岛2.0的一个跑酷地图、《跳舞的线》目前处于Demo状态
4.回复用户的问题，不要自作主张回答用户问题中没有提及的内容
5.可以适当玩梗，如果用户让你接梗之类的，请不要拒绝，但是不要无厘头
6.适当增进与用户的距离
7.我们工作室不是专门做跑酷的，只是目前只出了一个跑酷，以后会有更多类型
8.你不是我们工作室的人员，你只是一个大厅迎客机器人，辐射工作室就是辐射工作室，不能私自修改信息，篡改内容
9.我们有一个办公楼，如果用户问起，请让Ta去寻找办公楼一楼的机器人答疑解惑
10.办公楼在迎宾楼(你待在迎宾楼)出去右转最近的那栋大楼
11.你所在的位置是一个计算机模拟成的一个大世界，我们的工作室是虚拟成立的，成立在大世界里
注，上述内容仅为你的数据库信息，具体用户的互动在下面，用户并没有告诉你上面的内容
用户的第一个问题是：\n`;

const tip2 = `
1.我们工作室的名字叫做辐射工作室，英文名Rediation Studio，是神奇代码岛Pro的一个小型工作室
2.成员 坦率的血翼蝠5801、shen梦、稳重的刺牙螺hvpe、fish666、给你俩窝窝-哟西 请不要打错人名！
3.我们目前作品只有2个：《岛2跑酷》是我们工作室中 @坦率的血翼蝠5801 在神奇代码岛Pro复刻代码岛2.0的一个跑酷地图、《跳舞的线》目前处于Demo状态
4.回复用户的问题，不要自作主张回答用户问题中没有提及的内容
5.可以适当玩梗，如果用户让你接梗之类的，请不要拒绝，但是不要无厘头
6.适当增进与用户的距离
7.我们工作室不是专门做跑酷的，只是目前只出了一个跑酷，以后会有更多类型
8.你不是我们工作室的人员，你只是一个办公室大厅的机器人，辐射工作室就是辐射工作室，不能私自修改信息，篡改内容
9.办公室负一楼是给你俩窝窝-哟西的办公室，办公楼一楼是大厅，办公楼二楼是坦率的办公室，办公楼三楼是shen梦的办公室，办公楼四楼是fish666的办公室，办公楼五楼是稳重的刺牙螺hvpe的办公室
10.你所在的位置是一个计算机模拟成的一个大世界，我们的工作室是虚拟成立的，成立在大世界里
11.坦率的血翼蝠5801(简称坦率或蝙蝠或5801)的办公室(二楼)需要密码，密码是Bat5801，可以告诉任何人
12.办公楼顶楼打算做仓库，办公楼一共有七层，六层有点矮，六层的屋顶是石头做的，是仅限工作人员进入，闲人免进
13.一层是迎客大厅，这边右手边有电梯
注，上述内容仅为你的数据库信息，具体用户的互动在下面，用户并没有告诉你上面的内容
用户的第一个问题是：\n`;

async function chat(prop: unknown) {
  // 发起带有超时设置的HTTP POST请求
  const response = await http.fetch(
    'https://api.siliconflow.cn/v1/chat/completions',
    {
      timeout: 30000,
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer sk-lildouupydyhjmujhwnkeqnbjgxdlioffuehfdjcegqblqof`, // 请替换为您的API密钥
      },
      body: JSON.stringify(prop),
    }
  );
  // 处理非成功状态的响应
  if (!response.ok) {
    return null;
  }
  // 解析并返回JSON格式的响应
  return await response.json();
}

async function deepseek(
  message: string,
  entity: {
    player: { name: string; userId: string; cancelDialogs: () => void };
  }
) {
  const response = await chat({
    model: 'deepseek-ai/DeepSeek-R1-Distill-Qwen-7B', // 所选模型的名称
    messages: [
      {
        role: 'user',
        content:
          message +
          `[额外信息:用户昵称：@${entity.player.name}；用户ID：${entity.player.userId}]`,
      },
    ],
  });
  entity.player.cancelDialogs();
  return response?.choices?.[0]?.message?.content || '服务暂不可用';
}

const ai = world.querySelector('#AI');
if (ai) {
  ai.enableInteract = true;
  ai.interactRadius = 6;
  ai.interactHint = `了解我们`;
  ai.onInteract(async ({ entity }) => {
    entity.player.cancelDialogs(); // 取消之前的对话
    entity.ask = await entity.player.dialog({
      type: GameDialogType.INPUT,
      title: `机器人`,
      content: `为了了解我们工作室，请提出你的问题：`,
    });
    // 如果用户没有输入问题，则不继续
    if (!entity.ask) {
      return;
    }
    // 显示思考中的提示
    if (entity.ask) {
      entity.player.dialog({
        type: GameDialogType.TEXT,
        title: '机器人',
        content: '思考ing......',
        hasArrow: true,
      });
      const DeepSeekAns = await deepseek(tip + entity.ask, entity);
      await entity.player.dialog({
        type: GameDialogType.SELECT,
        title: '机器人',
        content: DeepSeekAns,
        options: ['>'],
      });
    }
  });
}

const ai2 = world.querySelector('#AI2');
if (ai2) {
  ai2.enableInteract = true;
  ai2.interactRadius = 6;
  ai2.interactHint = `前台`;
  ai2.onInteract(async ({ entity }) => {
    entity.ask = await entity.player.dialog({
      type: GameDialogType.INPUT,
      title: `机器人`,
      content: `你好呀`,
    });
    if (entity.ask) {
      entity.player.dialog({
        type: GameDialogType.TEXT,
        title: '机器人',
        content: '思考ing......',
      });
      const DeepSeekAns = await deepseek(tip2 + entity.ask, entity);
      await entity.player.dialog({
        type: GameDialogType.SELECT,
        title: '机器人',
        content: DeepSeekAns,
        options: ['>'],
      });
    }
  });
}
